// 该游戏是一个猜数字的游戏
// 玩家输入 4 位 0-9 不重复的数字，和电脑所生成 4 位 0-9 不重复的数字进行一个比较
// 如果位置和大小都正确，计入 A
// 如果数字正确但是位置不对，计入 B
// 电脑 1 2 3 4
// 玩家 5 2 1 7
// 返回 1A1B

const readline = require("readline-sync");
const { randomNum, verify } = require("./utils/tools");

/**
 * 主函数
 */
function main(): void {
  const n: number = 4;
  let guessNum: string, // 用户输入数字
    a: number = 0, // A集合的数量
    b: number = 0, // B集合的数量
    chance: number = 10; // 可猜测次数

  const comNum: number[] = randomNum(n); // 生成4位不重复数字

  // 鼓励语句
  const arr: string[] = [
    "加油！",
    "还差一点了",
    "你马上就要猜中了",
    "很简单的，再想想",
    "也许你需要冷静一下",
  ];
  console.log("-----开始游戏------");
  while (chance) {
    console.log("请输入猜测的数字：例如1234");
    guessNum = readline.question(""); // 接收输入
    if (!verify(guessNum)) {
      console.log("输入不规范，请重新输入");
    } else {
      const guessArr: number[] = [...guessNum].map((s) => Number(s));
      guessArr.forEach((v, i) => {
        comNum.forEach((v2, j) => {
          if (v == v2 && i == j) {
            a++;
          } else if (v == v2) {
            b++;
          }
        });
      });
      if (a == n) {
        break;
      } else {
        console.log(`此次猜测为：${a}A${b}B`);
        chance--;
        if (chance > 0) {
          let index = Math.floor(Math.random() * arr.length);
          console.log(`你还剩下${chance}次机会,${arr[index]}`);
        }
        a = 0;
        b = 0;
      }
    }
  }

  if (chance == 0) {
    console.log("很遗憾,你已经没有机会了！");
    console.log(`电脑生成的随机数为${comNum}`);
  } else {
    console.log("恭喜你,猜测正确,游戏结束");
    console.log("----Thank you for playing-----");
  }
}

main();
